package com.blog.controller;

import com.blog.entity.Banner;
import com.blog.mapper.BannerMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.io.File;
import java.util.List;

/**
 * 处理客户端(浏览器端，手机app端)的banner业务请求
 */
@RestController
public class BannerController {

    @Autowired
    private BannerMapper bannerMapper;

    /**
     * 处理客户端查询所有banner数据的请求
     * @GetMapping用于定义请求方式和请求path，
     * 此注解描述方法只能处理Get请求
     * @return
     */
    @GetMapping("/banner/list")
    public List<Banner> list(){
        return bannerMapper.list();
    }

    /**
     * 基于id获取某个banner对象的url
     * 访问：http://localhost:80/banner/select/10
     * @PathVariable注解描述方法参数时，表示这个参数的值，来自请求的url
     * @param id
     * @return
     */
    @GetMapping("/banner/select/{id}")
    public String selectUrlById(@PathVariable("id") Integer id){
        return bannerMapper.selectUrlById(id);
    }

    /**
     * 定义处理添加banner信息的方法
     * 访问
     * post http://localhost:80/banner/insert
     * Content-Type: Application/json
     *
     * {
     *    "id": null,
     *    "url": xxxx.jpg
     * }
     * @param banner
     */

    @PostMapping("/banner/insert")
    public void insert(@RequestBody Banner banner){
        System.out.println(banner);
        bannerMapper.insert(banner);
    }

    /**
     * 定义处理删除请求的方法
     * @param id
     */
    @DeleteMapping("/banner/delete/{id}")
    public void delete(@PathVariable("id") Integer id){
          //1.基于id查找对应的资源
        String imageUrl=bannerMapper.selectUrlById(id);
         //2.删除磁盘中的文件
        new File("d:/file",imageUrl).delete();
        //3.删除数据库中的banner信息
        bannerMapper.deleteById(id);
    }

}
